الگوریتم بهینه محاسبه یک مقدار خاص در تابع فیبوناتچی
جمعه 91/3/19
12:25 عصر
نظر
الگوریتم بهینه محاسبه یک مقدار خاص در تابع فیبوناتچی
همونطور که میدونید برای محاسبه فیبوناتچی یک عدد از یک حلقه for یا تابعی بازگشتی استفاده میشه که اگه از تابع بازگشتی اون برای مقادیر بالا مثلا 20 به بالا بخواهید استفاده کنید زمان محاسبه اون به تدریج خیلی بالا میره ، می تونید برای تمرین و فهم زمان بد محاسبه اون از کد زیر که ساده ترین کد برای تابع بازگشتی فیبوناتچی هستش استفاده کنید.
کد:
#include <iostream> ولی در این بین برای بهینه کردن این الگوریتم از قانون بهره ترکیبی استفاده می کنیم که بیان این قانون به این صورت می باشد که اگر در جریان محاسبات تابع بازگشتی به یک عمل چندین بار مراجعه می شود بهترین کار این است که برای اولین بار که به آن عمل مراجعه شد نتایج آن در جایی ذخیره شود و در جریان فراخوانی های بعدی از همان مقداری که در مرحله قبل برای آن عمل محاسبه شده استفاده کرد و دوباره همان عمل تکراری را محاسبه نکرد یا به عبارت دیگر یک تابع بازگشتی باید از نتایج ضمنی تولید شده توسط مراحل قبلی برای کوتاهی محاسبات استفاده کند .اینم کد بهینه شده برای این الگوریتم که اگه با کد قبلی مقایسه کنید حتما متوجه اهمیت این قانون بسیار مهم می شوید. کد:
#include <iostream> |